package Runde7;

public class Test {

	public static void main (String[] args) {
		
		//Erstellung einer Menge an Groszwild
		System.out.println("Erstelle Menge (Array) von Groszwild (Elefant und Giraffe)");
		Groszwild[] gw = new Groszwild[2];
		gw[0] = new Giraffe("Langhals Joe");
		gw[1] = new Elefant("Amnesiefant");
		
		
		//Erstellung von Transporter und Anhaengern
		//Params fuer Erstellung v. TransportAnhaenger:
		//WasserSize, LandwasserSize, TMambaSize, TPython, TZwergSize, tRiesenSize, anhaengeSize, Groszwild[] 
		System.out.println("\n[NOTIZ] Transporter ist (programmiertechnisch) nur ein Anhaenger, der nirgendwo dranhaengt.");
		System.out.println("Instanziere \"Transporter\" (diverse Terrarien, 3 Anhaengestellen) und haenge erstelltes Groszwild an ...");
		TransportAnhaenger tp = new TransportAnhaenger(2, 1, 2, 2, 2, 1, 3, gw);
		System.out.println("Instanziere neuen Anhänger (Nur 5 ZS-Kroten Terrarien) ...");
		TransportAnhaenger an1 = new TransportAnhaenger(0, 0, 0, 0, 5, 0, 4, new Groszwild[0]);
		System.out.println("Instanziere weiteren Anhänger (1 Mamba und 2 Python Terrarien) ...");
		TransportAnhaenger an2 = new TransportAnhaenger(0, 0, 1, 2, 0, 0, 4, new Groszwild[0]);
		
		//Einladen von Tieren
		TransportierbaresTier tier;
		TransportierbaresTier tier2;
		TransportierbaresTier tier3;
		System.out.print("\nLade Delfin in Transporter ... ");
		tier = new Delfin("Flipper");
		System.out.print(tp.load(tier));
		System.out.print("\nLade zwei Schwertfische in Transporter ... ");
		tier = new Schwertfisch("Abschecherli");
		tier2 = new Schwertfisch("Klingi");
		System.out.print(tp.load(tier) + ", " + tp.load(tier2));
		System.out.print("\nLade Seehund in Transporter (Fehler, kein freier LandWassertank) ... ");
		tier = new Seehund("Doppelkinn");
		System.out.print(tp.load(tier));
		System.out.print("\nLade Riesenschildkroete in Anhaenger 1 (Fehler, kein freies RSKroeten-Terrarium) ... ");
		tier = new Riesenschildkroete("Fetti");
		System.out.print(an1.load(tier));
		System.out.print("\nLade Zwergschildkroete in Anhaenger 1 ... ");
		tier =new Zwergschildkroete("Fels");
		System.out.print(an1.load(tier));
		System.out.print("\nLade zwei Mamba's und eine Python in Anhaenger 2 ... ");
		tier = new Mamba("Beisser");
		tier2 = new Mamba("Schuppi");
		tier3 = new Python("Monty");
		System.out.print(an2.load(tier) + ", " + an2.load(tier2) + ", " + an2.load(tier3)  + "\n");
		System.out.println("--- Liste von Tieren (von Transporter aus): ---");
		System.out.print(tp.list());
		System.out.println("-----------------------------------------------");
		
		tier = null;
		tier2 = null;
		tier3 = null;
		
		//Ladung/Entladung von Anhaengern und Groszwild
		System.out.print("\n\nHaenge Anhaenger 1 an Transporter und Anhaenger 2 an Anhaenger 1 ... ");
		System.out.print(tp.load(an1)+ ", " + an1.load(an2) + "\n");
		System.out.println("--- Liste von Tieren (von Transporter aus): ---");
		System.out.print(tp.list());
		System.out.println("-----------------------------------------------");
		System.out.print("Haenge Anhaenger 2 von Anhaenger 1 ab ... ");
		TransportAnhaenger rean2 = an1.unload(0);
		System.out.print(rean2);
		System.out.print("\nHaenge Anhaenger 2 an Transporter an (Fehler, keine freien Anhaengekopplungen mehr) ... ");
		System.out.print(tp.load(rean2));
		System.out.print("\nVersuche Elefant von Transporter abzuhaengen (Fehler, nicht erlaubt) ... ");
		System.out.print(tp.unload(1) + "\n");
		System.out.println("--- Liste von Tieren (von Transporter aus): ---");
		System.out.print(tp.list());
		System.out.println("-----------------------------------------------");
		
		//Entladung von Tieren
		System.out.print("\n\nHaenge Anhaenger 2 an wieder an Anhaenger 1 an ... ");
		System.out.print(an1.load(rean2));
		System.out.print("\nEntlade ersten Schwertfisch aus Transporter ... ");
		System.out.print(tp.unload(0,0));
		System.out.print("\nEntlade zweite Mamba aus Anhaenger 2 (aus Python Terrarium) ... ");
		System.out.print(rean2.unload(3,0));
		System.out.print("\nEntlade leeres Zwergschildkroeten Terrarium aus Anhaenger 1 ... ");
		System.out.print(an1.unload(4,2) + "\n");
		System.out.println("--- Liste von Tieren (von Transporter aus): ---");
		System.out.print(tp.list());
		System.out.println("-----------------------------------------------");
	}
}
